<?php

	/**
	 * 后台分类管理
	 */
	 class CategoryController extends AuthController{
	 	
		private $model;  //整个category模型实例
		
		public function __init(){
			$this->model = K('Category');			
		}
		
		/**
		 * 显示后台分类页面
		 */
		public function index(){
			$cates = $this->model->findTopCate();
			$this->assign('cates',$cates);
			$this->display();
		}
		
		
		/**
		 * 添加子类方法
		 */
		 public function addson(){
//		 	var_dump(Q('get.'));
		 	$this->display();
		 }
		 
		 
		/**
		 * 删除分类
		 */
		 public function delCate(){
		 	$cid = Q('get.cid');
		 	$result = $this->model->delCate($cid);
//			var_dump($result);die;
			if(!$result){
				$this->error("无法删除这个分类,他下面还存在子分类,请先删除子分类 ");
			}else{
				$this->success('删除分类成功~!');
			}
		 }
		
		
		
		/**
		 * 修改分类的方法
		 */
		 public function editcate(){
		 	//当提交过来
		 	$cid = Q('get.cid',0,'intval');
		 	if(IS_POST){
		 		if($this->model->updateCate($_POST)){
		 			$this->success('更新成功');
		 		}else{
		 			$this->error($this->model->error);
		 		}
		 	}
		 	//获得当前旧内容
			$result = $this->model->findCate($cid);
//			var_dump($result);die;
			$this->assign('cate',$result);
//			var_dump($result);die;
			//获得当前cid所有对应的子集
			$sonCid = $this->resSonCate($this->model->all(),$cid);
			
			//再将自己压入数组中
			$sonCid[] = $cid;
			//处理所属分类数据，更改所属分类 不能是自己和自己的子集
			//所以要排序他们这样要使用到not in
			$cidStr = implode(',',$sonCid);
			$data = $this->model->where("cid not in ({$cidStr})")->all();
			//查询出顶级分类
			$data = Data::tree($data,'cname','cid','pid');
			$this->assign('data',$data);
			
		 	$this->display();
		 }
		
		/**
		 * 添加分类页面
		 */
		 public function add(){
		 	//先将所有的顶级分类显示出来
		 	$this->assign('topCate',$this->model->findTopCate());
		 	/**
			 *  当页面提交了post时
			 */
			if(IS_POST){
				if($this->model->addCate($_POST)){
					$this->success('添加分类成功');
				}else{
					//压入数据失败提示错误 信息
					$this->error($this->model->error);
				}
			}		
			
			
		 	$this->display();
		 }
		 
		 /**
		  *  ajax检测类型是否存在如果已经存在那么不添加
		  */
		 public function ajaxCheckCate(){
		 	//分类名
		 	$cname = Q('post.cname');
			//检测当前的分类 是否已经存在如果存在那么就显示1否则就显示0
		 	$result = $this->model->find("cname='{$cname}'");
			if($result){
				echo 1;
			}else{
				echo 0;
			}
		 }
		 
		 
		 /**
		  * ajax请求查询当前的分类下面的子分类 
		  */
		  public function ajaxFindSonCate(){
		  	$pid = Q('post.pid');
		  	$result = $this->model->findAllSon($pid);
			$this->ajax($result);
		  }
		 
		 /**
		  * 递归遍历当前分类下方所有的子类
		  */
		  public function ajaxHideSonCate(){
		  	$cid = $_POST['cid'];
//			echo $cid;
		  	$result = $this->model->allCate();
			$cids = $this->resSonCate($result, $cid);
			$this->ajax($cids);
			
		  }
		  
		  /**
		   * 递归拿到所有分类下边的子分类的子分类的cid
		   */
		  private function resSonCate($data,$cid){
//		  		echo $cid;die;
		  		$arr = array();
				foreach($data as $d){
					if($d['pid'] == $cid){
						$arr[] = $d['cid'];
						$arr = array_merge($this->resSonCate($data, $d['cid']),$arr);
					}
					
				}
				return $arr;
		  }
		 
		 
		
	 }
	